package com.ybxx.core.util;

import java.math.BigDecimal;
import java.util.Calendar;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
 * 功能：参数类型转换辅助类
 * 公司：XA.Co.LTD
 * 制作人：Tom.Y
 * 日期：2011-05*/
public class ParamUtil{
	private static Log logger = LogFactory.getLog(ParamUtil.class);

	public static Object convertObject(String type, String paramValue) {
		if (StringUtils.isEmpty(paramValue)) return null;
		Object value = null;
		try {
			if ("S".equals(type)) {
				value = paramValue;
			} else if ("L".equals(type)) {
				value = new Long(paramValue);
			} else if ("N".equals(type)) {
				value = new Integer(paramValue);
			} else if ("BD".equals(type)) {
				value = new BigDecimal(paramValue);
			} else if ("FT".equals(type)) {
				value = new Float(paramValue);
			} else if ("SN".equals(type)) {
				value = new Short(paramValue);
			} else if ("D".equals(type)) {
				value = DateUtils.parseDate(paramValue, new String[] { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss" });
			} else if ("DL".equals(type)) {
				Calendar cal = Calendar.getInstance();
				cal.setTime(DateUtils.parseDate(paramValue, new String[] { "yyyy-MM-dd" }));
				value = DateUtil.setStartDay(cal).getTime();
			} else if ("DG".equals(type)) {
				Calendar cal = Calendar.getInstance();
				cal.setTime(DateUtils.parseDate(paramValue, new String[] { "yyyy-MM-dd" }));
				value = DateUtil.setEndDay(cal).getTime();
			} else {
				value = paramValue;
			}
		} catch (Exception ex) {
			logger.error("the data value is not right for the query filed type:" + ex.getMessage());
		}
		return value;
	}
}
